iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0

我們這 30 天學過:

  • Chat:對話生成
  • Image:圖片生成
  • Audio:語音辨識 / 文字轉語音
  • File:上傳 / 文件摘要
  • FastAPI:包成簡易後端

那今天,我們要把這些都整合起來!
做出一個可以「用說的、看圖、回話」的 AI 小幫手!

from openai import OpenAI
from fastapi import FastAPI, Form
from fastapi.responses import FileResponse
import base64
client = OpenAI(api_key="YOUR OPENAI KEY")
app = FastAPI()

@app.post("/ask")
async def ask_ai(prompt: str = Form(...), mode: str = Form("chat")):
    """
    mode 可以是:
    - chat:對話回覆
    - image:生成圖片
    - voice:生成語音回覆
    """

    if mode == "chat":
        # Chat 模式
        resp = client.chat.completions.create(
            model="gpt-4o-mini",
            messages=[{"role": "user", "content": prompt}],
        )
        answer = resp.choices[0].message.content
        return {"mode": "chat", "response": answer}

    elif mode == "image":
        # 圖片生成模式
        result = client.images.generate(
            model="gpt-image-1",
            prompt=prompt,
            size="1024x1024"
        )
        image_base64 = result.data[0].b64_json
        image_bytes = base64.b64decode(image_base64)
        output_path = "ai_output.png"
        with open(output_path, "wb") as f:
            f.write(image_bytes)
        return FileResponse(output_path, filename="ai_output.png")

    elif mode == "voice":
        # 語音生成(TTS)
        tts = client.audio.speech.create(
            model="gpt-4o-mini-tts",
            voice="alloy",
            input=prompt
        )
        output_path = "ai_voice.mp3"
        tts.stream_to_file(output_path)
        return FileResponse(output_path, filename="ai_voice.mp3")

    else:
        return {"error": "無效的 mode 參數,請用 chat / image / voice"}

https://ithelp.ithome.com.tw/upload/images/20251012/20169376e52Czk42yU.png
https://ithelp.ithome.com.tw/upload/images/20251012/20169376tDrC8emzYi.png
https://ithelp.ithome.com.tw/upload/images/20251012/20169376IYU8Ee1PhK.png
https://ithelp.ithome.com.tw/upload/images/20251012/20169376kld4VUfEAI.png

今天我們把過去 20 多天學的技能串起來,打造了一個可以「看圖、講話、畫圖」的 AI 小幫手。
它雖然只是幾十行程式,但已經能回文字、能生成圖像、也能講出聲音
你做的,不只是範例程式,而是你第一個真正能用的「AI 助理原型」!


上一篇
Day 27:用對 Prompt,讓 AI 幫你更聰明地工作!
下一篇
Day 29:整合 OpenAI API 打造智慧文件助理
系列文
AI 三十天,哎呀每天都很難:OpenAI API 生存指南30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言